home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / AFdigitale (IT).ifs < prev    next >
Encoding:
Text File  |  2005-03-10  |  7.1 KB  |  197 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Pivello (see comments for changes authors)
  8. Title=AFdigitale
  9. Description=Get movie info from AFDigitale
  10. Site=http://www.AFdigitale.it
  11. Language=IT
  12. Version=10.03.2005
  13. Requires=3.5.0
  14. Comments=**Changes**|14.04.2004 First Public Release (Pivello)|02.02.2005 adapted to v.3.5.0 (Dinolib)|06.03.2005 rewrite html seek tags|10.03.2005 Revised for pivlib.pas Library use (Pivello)
  15. License=*  The source code of the script can be used in   |*  another program only if full credits to              |*  script author and a link to Ant Movie Catalog  |*  website are given in the About box or in       |*  the documentation of the program               |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program AFdigitale;
  23.  
  24. uses
  25.   Pivlib; // Pivello's scripts common library
  26.  
  27. const
  28.  UrlBase = 'http://www.afdigitale.it';
  29.  QueryBase = UrlBase + '/edisport/afdigitale/dvd.nsf/DVDS?SearchView&Query=';
  30.  
  31. var
  32.  MovieUrl, MovieName, OriginalStr, TranslatedStr, PageStr:  string;
  33.  
  34.  
  35. // -----------------------
  36. // ANALYZE MOVIE DATA PAGE
  37. // IN:  none
  38. // OUT: set Ant fields
  39. // -----------------------
  40. procedure AnalyzeMoviePage;
  41. var
  42.   TempStr: string;
  43. begin
  44.   // Get packed title main page
  45.   PageStr := RemoveExtraChars(MovieUrl);
  46.   // image
  47.   GetPicture(UrlBase + getValue(PageStr, 'rowspan="2"><img src="','" width="',true,true));
  48.   PageStr := GetPageStr;
  49.   
  50.   // Translated Title field
  51.   SetField(fieldTranslatedTitle, getValue(PageStr, 'face="Verdana"><br>','</font></b>',true,true));
  52.   PageStr := GetPageStr;
  53.   
  54.   // Original Title field
  55.   SetField(fieldOriginalTitle, getValue(PageStr, 'face="Verdana">','</font></td>',true,true));
  56.   PageStr := GetPageStr;
  57.   if((uppercase(GetField(fieldOriginalTitle))='ID') or (GetField(fieldOriginalTitle)=''))then
  58.     SetField(fieldOriginalTitle, GetField(fieldTranslatedTitle));
  59.   // Category Field
  60.   SetField(fieldCategory, getValue(PageStr, '</b><b><font size="1" color="#000080" face="Verdana">','</font></b>',true,true));
  61.   PageStr := GetPageStr;
  62.   // Director Field
  63.   SetField(fieldDirector, getValue(PageStr, '<b><font size="1" color="#000080" face="Verdana">','</font></b>',true,true));
  64.   PageStr := GetPageStr;
  65.   // Actors Field
  66.   SetField(fieldActors, getValue(PageStr, '<b><font size="1" color="#000080" face="Verdana">','</font></b>',true,true));
  67.   PageStr := GetPageStr;
  68.   // YearField
  69.   SetField(fieldYear, getValue(PageStr, '<b><font size="1" color="#000080" face="Verdana">','</font></b>',true,true));
  70.   PageStr := GetPageStr;
  71.   // Producer Field
  72.   Delete (PageStr,1,pos(uppercase('Distribuito da:'),uppercase(PageStr)));
  73.   SetField(fieldProducer, getValue(PageStr, 'face="Verdana">','</font></b></td>',true,true));
  74.   PageStr := GetPageStr;
  75.   // Duration field
  76.   Delete (PageStr,1,pos(uppercase('Durata:</font><b><font size="1" color="#FFFFFF" face="Verdana">'),uppercase(PageStr)));
  77.   SetField(fieldLength, getValue(PageStr, '</b><b><font size="1" color="#ffffff" face="Verdana">','</font></b><b>',true,true));
  78.   PageStr := GetPageStr;
  79.   // Size Field
  80.   Delete (PageStr,1,pos(uppercase('FACE="Verdana">Supporto: </FONT>'),uppercase(PageStr)));
  81.   SetField(fieldSize, getValue(PageStr, 'FACE="Verdana">','</FONT></B><BR>',true,true));
  82.   PageStr := GetPageStr;
  83.   // Description Field
  84.   Delete (PageStr,1,pos('Qualitα artistica:</font></b><font face="Verdana">',PageStr));
  85.   TempStr := getValue(PageStr, '<font size="2" face="Verdana">','</font><br>',true,true);
  86.   PageStr := GetPageStr;
  87.   HTMLDecode(TempStr);
  88.   SetField(fieldDescription, TempStr);
  89.   // Comments Field
  90.   TempStr := getValue(PageStr, '<font size="2" face="Verdana">','</font><br>',true,true);
  91.   PageStr := GetPageStr;
  92.   HTMLDecode(TempStr);
  93.   SetField(fieldComments, TempStr);
  94.   // Movie URL field
  95.   SetField(fieldURL, MovieUrl);
  96. end;
  97.  
  98.  
  99. // ------------------------------------------------------------------
  100. // FILL PICKTREE CONTROL WITH LINKS & TITLES or RETURN ONE PAGE LINK
  101. // if OneFilm flag true return Film Id else populate PickTree
  102. // IN:  OneFilm flag (bool)
  103. // OUT: one page ID  (string)
  104. // ------------------------------------------------------------------
  105. function PopulatePickTree(OneFilm: boolean): string;
  106. var
  107.   TempUrl: string;
  108.   TempTitle: string;
  109.   StartPos: integer;
  110.   EndPos: integer;
  111. begin
  112.   result := '';
  113.   StartPos := pos('<A HREF="', uppercase(PageStr));
  114.   Delete(PageStr, 1, StartPos - 1);
  115.   if OneFilm then
  116.     begin
  117.       StartPos := pos('<A HREF="', uppercase(PageStr));
  118.       EndPos := pos('"><DIV', uppercase(PageStr));
  119.       if StartPos > 0 then
  120.         begin
  121.           TempUrl := copy(PageStr, StartPos + 9, EndPos-Startpos - 9);
  122.           result := UrlBase + TempUrl;
  123.         end
  124.     end
  125.   else
  126.     begin
  127.       PickTreeClear;
  128.       repeat
  129.         StartPos := pos('<A HREF="', uppercase(PageStr));
  130.         EndPos := pos('?OpenDocument', PageStr);
  131.         if StartPos > 0 then
  132.           begin
  133.             TempUrl := copy(PageStr, StartPos + 9, EndPos-Startpos + 4);
  134.             Delete(PageStr, 1, EndPos + 1);
  135.             StartPos := pos('''">', PageStr);
  136.             EndPos := pos('</DIV>', uppercase(PageStr));
  137.             TempTitle := copy(PageStr, StartPos + 3, EndPos-Startpos - 3);
  138.             Delete(PageStr, 1, EndPos + 1);
  139.             PickTreeAdd(TempTitle, UrlBase + TempUrl);
  140.           end;
  141.       until(StartPos = 0);
  142.   end
  143. end;
  144.  
  145.  
  146. // ---------------------------------
  147. // ANALYZE FIRST SEARCH RESULT PAGE:
  148. // IN:  none
  149. // OUT: none
  150. // ---------------------------------
  151. procedure AnalyzeSearchPage;
  152. begin
  153.   PageStr := RemoveExtraChars(MovieUrl);
  154.   if pos('Nessun elemento trovato', PageStr) > 0 then
  155.     ShowMessage('Title not found / Nessun film trovato.')
  156.   else if pos('Si Φ verificato un errore',PageStr) > 0 then
  157.     ShowMessage('Server not available, try later / Server non disponibile, prova pi∙ tardi')
  158.   else
  159.     begin
  160.       if pos('1 elemento trovato', PageStr) > 0 then
  161.         MovieUrl := PopulatePickTree(true)    // One title found
  162.       else
  163.         begin
  164.           PopulatePickTree(false);            // More titles found..
  165.           if not PickTreeExec(MovieUrl) then  // ..select one
  166.             exit;
  167.         end;
  168.       AnalyzeMoviePage;
  169.     end;
  170. end;
  171.  
  172. // ----------
  173. // MAIN:
  174. // IN:  none
  175. // OUT: none
  176. // ----------
  177. begin
  178.   if CheckVersion(3,5,0) then
  179.     begin
  180.       TranslatedStr := GetField(fieldTranslatedTitle);
  181.       OriginalStr := GetField(fieldOriginalTitle);
  182.       if (TranslatedStr <> '') then
  183.         MovieName := TranslatedStr
  184.       else
  185.         MovieName := OriginalStr;
  186.       if (Input('AFdigitale.it - By Pivello (and others)', 'Enter the title of the movie / Inserire titolo del film:', MovieName)) then
  187.         begin
  188.          InitializePivLib;
  189.          MovieUrl := QueryBase + UrlEncode(MovieName);
  190.          AnalyzeSearchPage;
  191.          FinalizePivLib;
  192.         end;
  193.     end
  194.   else
  195.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  196. end.
  197.